package com.domain;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;

/**
 * <p>
 * 
 * </p>
 *
 * @author 大忽悠
 * @since 2022年02月08日
 */
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@Data
@ApiModel("问题实体类")
public class Issue implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 问题标题
     */
    @NotNull(message = "提问标题不能为空")
    @NotEmpty(message = "提问标题不能为空")
    @Length(min = 1,max=100,message = "问题标题字数在1到100字之间")
    @ApiModelProperty("问题标题")
    private String questionTitle;

    /**
     * 问题详情
     */
    @ApiModelProperty("问题详情,可以为空")
    @Length(max=1000,message = "问题详情字数最多1000字")
    private String questionDetails;

    /**
     * 问题详情中含有的图片
     */
   // @JsonIgnore
    private String imgs;

    @ApiModelProperty("问题详情中含有的图片,可以为空")
    @TableField(exist = false)
    private List<String> imgPaths;


    /**
     * 问题详情中含有的视频
     */
    //@JsonIgnore
    private String videos;

    @TableField(exist = false)
    @ApiModelProperty("问题详情中含有的视频,可以为空")
    private List<String> videoPaths;

    /**
     * 提问人id
     */
    private Integer userId;

    /**
     * 浏览量
     */
    @ApiModelProperty("浏览量")
    private Integer views;

    /**
     * 评论数
     */
    @ApiModelProperty("评论数")
    private Integer commentSum;

    /**
     * 点赞数
     */
    @ApiModelProperty("点赞数")
    private Integer likeSum;

    /**
     * 是否匿名,1是,0否
     */
    @ApiModelProperty("是否匿名")
    private Integer isAnony;

    /**
     * 是否被逻辑删除,1是,0否
     */
    private Integer isDeleted;

    /**
     * 是否通过认证,1是,0否
     */
    @ApiModelProperty("通过认证")
    private Integer isAudited;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    private LocalDateTime updateTime;

    private Integer hot;
}
